1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Text;
8 using System.Threading.Tasks;
9 using System.Windows.Forms;
10
11 namespace SoftQuanLyNhaHang.Views
12 {
13
14 //public delegate void ShowFrm();
15 public partial class frmBanHangThanhToan : Form
16 {
17
18 private double _getTongTien;
19 private int _getIdKhachHang;
20 private string _getTrangThaiGiaoDich;
21
22 string _tongThanhToan = "0";
23 double _tralai = 0;
24
25 int _idKhachHang = 0;
26 private string _tenKhachHang = "0";
27 private string _soDienThoai = "0";
28 private string _diaChi = "0";
29 int _trangThai = 1;
30 private double _diemTichLuy = 0;
31
32 double _tongTien = 0;
33 double _tienKhach = 0;
34 double _tienTraLai = 0;
35
36 DateTime _ngayMuaHang = DateTime.Now;
37 string _ghiChu = "";
38
39 //int idKh = 0;
40 string kieuThanhToan = "binhthuong";
41
42 double _tienkhachdua = 0;
43 string _getThanhToanLuuKh = "checked";
44
45 //public event ShowFrm evtFrm;
46 //-http://diendan.congdongcviet.com/threads/t12606::cach-dung-delegate-trong-lap-trinh-csharp.cpp
47 //Khai báo 1 hàm delegate
48 public delegate void GetString(string tienkhachhangdua, string tientralaikhachhang, bool btnTrangThai_HuyFalse_hoac_LuuTrue, int idkhachhang);
49 //Khai báo 1 kiểu hàm delegate
50 public GetString MyGetData;
51
52 public frmBanHangThanhToan()
53 {
54 InitializeComponent();
55 //Ẩn nút hoàn tất khi chưa đủ tiền thanh toán
56 //btnHoanTat.Enabled = false;
57 }
58
59 public frmBanHangThanhToan(double tongThanhToan, int idkhachHang, string _thanhToan_LuuKh, string _TrangThaiGD) : this()
60 {
61 _getTongTien = tongThanhToan;
62 _getIdKhachHang = idkhachHang;
63 _idKhachHang = _getIdKhachHang;
64 _tongThanhToan = CauHinhHeThong.Format_SoDeHienThi(_getTongTien, true);// string.Format("{0:#,#}", _getTongTien);
65 _getThanhToanLuuKh = _thanhToan_LuuKh;
66 _getTrangThaiGiaoDich = _TrangThaiGD;
67
68 //_tenKhachHang = hovaten;
69 //_soDienThoai = sodienthoai;
70 //_diaChi = diachi;
71 //_diemTichLuy = double.Parse(diemtichluy);
72 //_ghiChu = ghichu;
73
74 }
75
76
77
78 private void frmBanHangThanhToan_Load(object sender, EventArgs e)
79 {
80 lbl_TongTien.Text = _tongThanhToan;
81 _idKhachHang = _getIdKhachHang;
82 kieuThanhToan = "binhthuong";
83
84 if (_getThanhToanLuuKh == "no_checked")
85 {
86 if (_getTrangThaiGiaoDich == "TraHang" || _getTrangThaiGiaoDich == "DatHang")
87 {
88 return;
89 }
90
91
92 tabControlThanhToan.TabPages.RemoveByKey("tabPage2");
93 }
94 }
95
96 //private String _var1from1;
97
98
99 private void btnHoanTat_Click(object sender, EventArgs e)
100 {
101
102
103 if (string.IsNullOrEmpty(txtHoVaTen.Text.Trim()))
104 {
105 txtHoVaTen.Focus();
106 return;
107 }
108
109 if (string.IsNullOrEmpty(txtSoDienThoai.Text.Trim()))
110 {
111 txtSoDienThoai.Focus();
112 return;
113 }
114
115 this.LuuThongTinThanhToan();
116 }
117
118 private void LuuThongTinThanhToan()
119 {
120
121 if(_getTrangThaiGiaoDich == "DatHang" || _getTrangThaiGiaoDich == "TraHang"){
122
123 tabControlThanhToan.SelectedTab = tabPage2;
124
125 if (string.IsNullOrEmpty(txtHoVaTen.Text.Trim()))
126 {
127 txtHoVaTen.Focus();
128 return;
129 }
130
131 if (string.IsNullOrEmpty(txtSoDienThoai.Text.Trim()))
132 {
133 txtSoDienThoai.Focus();
134 return;
135 }
136 }
137
138 //không thực hiện khi tiền khách đưa toán nhỏ hơn tiền thanh toán
139 double tKhachDua = CauHinhHeThong.Format_SoDeTinhToan(txtTienKhach.Text.Trim(), true);
140 double tLai = 0;
141 tLai = tKhachDua - _getTongTien;
142
143 _tongTien = CauHinhHeThong.Format_SoDeTinhToan(_tongThanhToan, true);
144 //_tienTraLai = CauHinhHeThong.Format_SoDeTinhToan(lblTraLai.Text, true);
145 _tienTraLai = tLai;// CauHinhHeThong.Format_SoDeTinhToan(tLai.ToString(), false);
146 _tienKhach = CauHinhHeThong.Format_SoDeTinhToan(lblTienKhach.Text, true);
147
148 _tenKhachHang = txtHoVaTen.Text.Trim();
149 _soDienThoai = txtSoDienThoai.Text.Trim();
150 _diaChi = txtDiaChi.Text.Trim();
151 _ghiChu = txtGhiChu.Text.Trim();
152
153 //update bảng khách hàng theo tổng tiền, tiền trả lại
154 Controllers.KhachHangCtrl_tbl.UpdateKhachHang_tbl(_idKhachHang, _tenKhachHang, _soDienThoai, _diaChi, _trangThai, _diemTichLuy, _tongTien, _tienKhach, _tienTraLai, _ngayMuaHang, _ghiChu, _getTrangThaiGiaoDich);
155 //Insert khách hàng mới
156 //_idKhachHang = Controllers.KhachHangCtrl_tbl.InsertKhachHang_tbl(_idKhachHang, _tenKhachHang, _soDienThoai, _diaChi, _trangThai, _diemTichLuy, _tongTien, _tienKhach, _tienTraLai, _ngayMuaHang, _ghiChu);
157 //update ban hang các sản phẩm đã bán
158 Controllers.BanHangCtrl.UpdateBanHang_TrangThai("", _getIdKhachHang, 1);
159 //trangthai = 1 là thanh toán mua hàng
160 //trangthai = 2 là sản phẩm dc khuyễn mại
161 //trang thai = 0 là thêm vào bảng bh nhưng k tính
162
163 //update so luong san pham da ban
164 DataTable dtBh = new DataTable();
165
166 dtBh = Controllers.BanHangCtrl.FillDataSet_getBanHangByKhachHangId("", _getIdKhachHang).Tables[0];
167
168 if (dtBh.Rows.Count > 0)
169 {
170 float soluong = 0;
171 float soluongDaBan = 0;
172 int idK = 0;
173
174 foreach (DataRow item in dtBh.Rows)
175 {
176
177 idK = Int32.Parse(item["NhapKhoId"].ToString());
178
179 //lay soluong trong bang ban hang
180 soluongDaBan = (float)CauHinhHeThong.Format_SoDeTinhToan(item["SoLuongDaBan"].ToString(), false);
181 soluong = (float)CauHinhHeThong.Format_SoDeTinhToan(item["SoLuong"].ToString(), false);
182
183 //update soluong da ban
184 Controllers.KhoCtrl.UpdateKho_SoLuongDaBan_ByIdKho(idK, soluong, soluongDaBan);
185 }
186 }
187
188
189 if (MyGetData != null)
190 {
191 //tại đây gọi nó; tiền khách, tiền trả lại
192
193 if (kieuThanhToan == "nhanh")
194 {
195 MyGetData("#", "#", true, 0);
196 }
197 else
198 {
199 MyGetData(lblTienKhach.Text, CauHinhHeThong.Format_SoDeHienThi(_tienTraLai, true), true, 0);
200 }
201
202
203 }
204
205 this.Close();
206
207 }
208
209 private void txtTienKhach_KeyPress(object sender, KeyPressEventArgs e)
210 {
211
212 /*
213 if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != char.Parse(CauHinhHeThong.DAU_PHAY)) && Control.ModifierKeys != Keys.Shift)
214 {
215 e.Handled = true;
216 }
217
218 // only allow one decimal point
219 if ((e.KeyChar == char.Parse(CauHinhHeThong.DAU_PHAY)) && ((sender as TextBox).Text.IndexOf(char.Parse(CauHinhHeThong.DAU_PHAY)) > -1))
220 {
221 e.Handled = true;
222 }
223 */
224 // CauHinhHeThong.NhapSoTrongTextBox(sender, e);
225 }
226
227 private void txtTienKhach_TextChanged(object sender, EventArgs e)
228 {
229
230 try
231 {
232 if (CauHinhHeThong.BARCODE_THANH_TOAN_BAN_HANG == txtTienKhach.Text.Trim())
233 {
234 lblTienKhach.Text = _getTongTien.ToString();
235 //txtTienKhach.Text = "";
236 return;
237 }
238 else
239 {
240 string value = txtTienKhach.Text.Replace(CauHinhHeThong.PHAN_CACH_HANG_NGHIN, "");
241 ulong ul = 0;
242
243 if (ulong.TryParse(value, out ul))
244 {
245 txtTienKhach.TextChanged -= txtTienKhach_TextChanged;
246
247 if (txtTienKhach.Text.StartsWith("0"))
248 {
249 txtTienKhach.Text = ul.ToString();
250 }
251 else
252 {
253 txtTienKhach.Text = CauHinhHeThong.DoFormat_NhapSoTrongText(value);
254 }
255
256 txtTienKhach.SelectionStart = txtTienKhach.Text.Length;
257 txtTienKhach.TextChanged += txtTienKhach_TextChanged;
258 }
259 else
260 {
261 if (txtTienKhach.Text.StartsWith(CauHinhHeThong.DAU_PHAY))
262 {
263 txtTienKhach.TextChanged -= txtTienKhach_TextChanged;
264 txtTienKhach.Text = "0" + txtTienKhach.Text;
265 txtTienKhach.SelectionStart = txtTienKhach.Text.Length;
266 txtTienKhach.TextChanged += txtTienKhach_TextChanged;
267 }
268 }
269
270 lblTienKhach.Text = txtTienKhach.Text.Trim();// string.Format("{0:#,#}", double.Parse(value));
271
272 _tienkhachdua = CauHinhHeThong.Format_SoDeTinhToan(txtTienKhach.Text.Trim(), true);
273 TienTraLai(_getTongTien, _tienkhachdua);
274 }
275 }
276 catch
277 {
278 //ExceptionkeeperBll.LogFileWrite(ex);
279 }
280
281 }
282
283 private void TienTraLai(double _tienThanhToan, double _tienKhach)
284 {
285
286 if (_tienKhach > _tienThanhToan)
287 {
288 _tralai = _tienKhach - _tienThanhToan;
289 lblTraLai.Text = CauHinhHeThong.Format_SoDeHienThi(_tralai, true);// string.Format("{0:#,#}", _tralai).ToString();
290 btnHoanTat.Enabled = true;
291 }
292 else if(_tienKhach == _tienThanhToan)
293 {
294 lblTraLai.Text = "0";
295 btnHoanTat.Enabled = true;
296 }
297 else
298 {
299 //_tralai = 0;
300 lblTraLai.Text = "";
301 //btnHoanTat.Enabled = false;
302
303 }
304
305 }
306
307 private void btnHuy_Click(object sender, EventArgs e)
308 {
309 if (MyGetData != null)
310 {
311 //tại đây gọi nó; tiền khách, tiền trả lại, btnThanhToan = false
312 MyGetData("0", "0", false, _idKhachHang);
313 }
314
315 this.Close();
316 }
317
318 private void txtTienKhach_KeyDown(object sender, KeyEventArgs e)
319 {
320
321 if (e.KeyCode == Keys.Escape)
322 {
323 this.Close();
324
325 return;
326 }
327
328 if ((e.Control && e.KeyCode == Keys.S) || CauHinhHeThong.BARCODE_THANH_TOAN_BAN_HANG == txtTienKhach.Text.Trim())
329 {
330 e.SuppressKeyPress = true;
331
332 txtTienKhach.Text = CauHinhHeThong.Format_SoDeHienThi(_getTongTien, true);
333
334 kieuThanhToan = "nhanh";
335
336 var t = new System.Windows.Forms.Timer();
337 t.Interval = 1000; // it will Tick in 3 seconds
338 t.Tick += (s, ex) =>
339 {
340 //this.btnThanhToanDayDu_Click(sender, e);
341 this.LuuThongTinThanhToan();
342
343 t.Stop();
344 };
345 t.Start();
346 }
347
348 /*
349 if (e.KeyCode == Keys.Enter)
350 {
351
352 if (string.IsNullOrEmpty(txtTienKhach.Text.Trim()))
353 {
354 lblTienKhach.Text = "0";
355 }
356
357 if (_tienkhachdua >= _getTongTien)
358 {
359 //Thêm mới khách hàng
360 _idKhachHang = Controllers.KhachHangCtrl_tbl.InsertKhachHang_tbl(_idKhachHang, _tenKhachHang, _soDienThoai, _diaChi, _trangThai, _diemTichLuy, _tongTien, _tienKhach, _tienTraLai, _ngayMuaHang, _ghiChu, _getTrangThaiGiaoDich);
361
362 if (MyGetData != null)
363 {
364 //tại đây gọi nó; tiền khách, tiền trả lại, btnThanhToan = false
365 MyGetData(lblTienKhach.Text, lblTraLai.Text, true, _idKhachHang);
366 }
367
368 //Đóng form
369 this.Close();
370 }
371 else
372 {
373 //MessageBox.Show("");
374 return;
375 }
376
377 }
378
379 */
380 }
381
382 private void frmBanHangThanhToan_FormClosing(object sender, FormClosingEventArgs e)
383 {
384
385 }
386
387 private void btnGhiNo_Click(object sender, EventArgs e)
388 {
389
390
391 }
392
393 private void button2_Click(object sender, EventArgs e)
394 {
395 if (MyGetData != null)
396 {
397 //tại đây gọi nó; tiền khách, tiền trả lại, btnThanhToan = false
398 MyGetData("0", "0", false, _idKhachHang);
399 }
400
401 this.Close();
402 }
403
404 private void button1_Click(object sender, EventArgs e)
405 {
406 if (string.IsNullOrEmpty(txtTienKhach.Text.Trim()))
407 {
408 txtTienKhach.Focus();
409
410 lblThongBao.Text = "Tiền thanh toán không được để trống!";
411 lblThongBao.Visible = true;
412
413 var t = new System.Windows.Forms.Timer();
414 t.Interval = 3000; // it will Tick in 3 seconds
415 t.Tick += (s, ex) =>
416 {
417 lblThongBao.Visible = false;
418 t.Stop();
419 };
420 t.Start();
421
422 return;
423 }
424
425 //không thực hiện khi tiền khách đưa toán nhỏ hơn tiền thanh toán
426 double tKhachDua = CauHinhHeThong.Format_SoDeTinhToan(txtTienKhach.Text.Trim(), true);
427 double tLai = 0;
428 tLai = tKhachDua - _getTongTien;
429
430 if (CauHinhHeThong.LUU_THONG_TIN_KHACH_MUA_HANG == "checked" || _getTrangThaiGiaoDich == "TraHang" || _getTrangThaiGiaoDich == "DatHang")
431 {
432
433 if (tLai < 0)
434 {
435 tabControlThanhToan.SelectedTab = tabPage2;
436
437 if (string.IsNullOrEmpty(txtHoVaTen.Text.Trim()))
438 {
439 txtHoVaTen.Focus();
440 return;
441 }
442
443 if (string.IsNullOrEmpty(txtSoDienThoai.Text.Trim()))
444 {
445 txtSoDienThoai.Focus();
446 return;
447 }
448 }
449
450 }
451 else
452 {
453 if (tLai < 0)
454 {
455 this.ActiveControl = txtTienKhach;
456 lblThongBao.Text = "Tiền thanh toán không đủ!";
457 lblThongBao.Visible = true;
458
459 var t = new System.Windows.Forms.Timer();
460 t.Interval = 3000; // it will Tick in 3 seconds
461 t.Tick += (s, ex) =>
462 {
463 lblThongBao.Visible = false;
464 t.Stop();
465 };
466 t.Start();
467
468 return;
469 }
470 }
471
472 this.LuuThongTinThanhToan();
473 }
474
475 private void btnGhiNo_Click_1(object sender, EventArgs e)
476 {
477 tabControlThanhToan.SelectedTab = tabPage2;
478
479 //if (string.IsNullOrEmpty(lblTraLai.Text.Trim()) || lblTraLai.Text.Trim() == "0")
480 //{
481 //tabControlThanhToan.SelectedTab = tabPage2;
482
483 //}
484
485 if (string.IsNullOrEmpty(txtHoVaTen.Text.Trim()))
486 {
487 txtHoVaTen.Focus();
488 lblThongBao.Text = "Họ tên không được để trống!";
489 lblThongBao.Visible = true;
490
491 var t = new System.Windows.Forms.Timer();
492 t.Interval = 3000; // it will Tick in 3 seconds
493 t.Tick += (s, ex) =>
494 {
495 lblThongBao.Visible = false;
496 t.Stop();
497 };
498 t.Start();
499 return;
500 }
501
502 if (string.IsNullOrEmpty(txtSoDienThoai.Text.Trim()))
503 {
504 txtSoDienThoai.Focus();
505 lblThongBao.Text = "Số điện thoại không được để trống!";
506 lblThongBao.Visible = true;
507
508 var t = new System.Windows.Forms.Timer();
509 t.Interval = 3000; // it will Tick in 3 seconds
510 t.Tick += (s, ex) =>
511 {
512 lblThongBao.Visible = false;
513 t.Stop();
514 };
515 t.Start();
516 return;
517 }
518
519
520 this.LuuThongTinThanhToan();
521 }
522
523 private void btnThanhToanDayDu_Click(object sender, EventArgs e)
524 {
525
526
527 txtTienKhach.Text = CauHinhHeThong.Format_SoDeHienThi(_getTongTien, true);
528
529 this.LuuThongTinThanhToan();
530 }
531
532 private void txtTienKhach_KeyUp(object sender, KeyEventArgs e)
533 {
534
535 }
536
537 //private void btnThanhToanDu_Click(object sender, EventArgs e)
538 //{
539 //this.LuuThongTinThanhToan();
540 //}
541
542 //private void txtSoDienThoai_TextChanged(object sender, EventArgs e)
543 //{
544 //btnHoanTat.Enabled = true;
545 //}
546 }
547 }